package com.hqq.search;

import java.util.Iterator;

/**
 * KeyMap
 * 键值对API接口
 * Created by heqianqian on 2017/8/5.
 */
public interface KeyMap<T, V> extends Iterable<T> {
    /**
     * 存储元素
     *
     * @param key   键
     * @param value 值
     */
    void put(T key, V value);

    /**
     * 根据键获取值
     *
     * @param key 键
     * @return 值
     */
    V get(T key);

    /**
     * 根据键删除键值对
     *
     * @param key 键
     */
    void delete(T key);

    /**
     * 是否包含键
     *
     * @param key 键
     * @return true/false
     */
    default boolean contains(T key) {
        return get(key) != null;
    }

    /**
     * 是否为空
     *
     * @return T/F
     */
    default boolean isEmpty() {
        return size() == 0;
    }

    /**
     * 键值对元素个数
     *
     * @return int
     */
    int size();

}
